<?php

class Admin_SoutezPresenter extends BasePresenter
{	
	public function renderDefault()
	{
		$soutez = new SoutezModel();
		$liga = new LigaModel();
		$sezona = new SezonaModel();
		$souteze = $soutez->findAll()->fetchAll();
		foreach($souteze as $item){
			 $tmp_liga = $liga->findById($item['liga_id'])->fetch();
			 $tmp_sezona = $sezona->findById($item['sezona_id'])->fetch();
			 
			 $item['liga_nazev'] = $tmp_liga['nazev'];
			 $item['sezona_nazev'] = $tmp_sezona['nazev'];
		}
		
		$this->template->souteze = $souteze;

	}
	public function renderNovy()
	{
		$form = $this['soutezForm'];		
	}
	public function renderUpravit($id = 0)
	{
			
		$this->template->noJs = $this->noJs;
		$this->template->selectFirst = $this->selectFirst;
		if(isset($this->hodnoty))
			$this->template->hodnoty = $this->hodnoty;
	
		$form = $this['soutezForm'];
		if (!$form->isSubmitted()) {
			$soutez = new SoutezModel();
			$row = $soutez->findById($id)->fetch();
				
			/*
			$tym_ids = $soutez->tym_soutez_findBySoutezId($row['id'])->fetchAll();
			
			
			$pole_tym_ids = array();
			foreach($tym_ids as $tym_id){
				array_push($pole_tym_ids,$tym_id['tym_id']);
			}
			
			$row['tym_id'] = $pole_tym_ids;
			*/
			if (!$row) {
				throw new NBadRequestException('Záznam nebyl nalezen.');
			}
			$form->setDefaults($row);
		}
	}
	
	public function renderSmazat($id = 0)
	{
		$soutez = new SoutezModel();
		$this->template->soutez = $soutez->findById($id)->fetch();
		if (!$this->template->soutez) {
			throw new NBadRequestException('Soutěž nebyla nalezena');
		}
	}
	
	
	
	protected function createComponentSmazatForm()
	{
		$form = new NAppForm;
		
		$form->addSubmit('delete', 'Smazat')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět');
		$form->onSubmit[] = callback($this, 'smazatFormSubmitted');
		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		return $form;
	}
	
	public function smazatFormSubmitted(NAppForm $form)
	{
		if ($form['delete']->isSubmittedBy()) {
			$soutez = new SoutezModel();
			$soutez->delete($this->getParam('id'));
			$this->flashMessage('Soutěž byla odstraněna.');
		}

		$this->redirect('default');
	}
	
	protected function createComponentSoutezForm()
	{
		$sezona = new SezonaModel();
		$liga = new LigaModel();
		$tym = new TymModel();
		$form = new NAppForm;
		$form->addText('nazev', 'Název soutěže:');
		$liga_items = $liga->findAll()->fetchPairs( 'id', 'nazev');
		$form->addSelect('liga_id', 'Liga:', $liga_items)->skipFirst('Zvolte ligu');
		$sezona_items = $sezona->findAll()->fetchPairs( 'id', 'nazev' );
		$form->addSelect('sezona_id', 'Sezóna:', $sezona_items)->skipFirst('Zvolte sezónu');
		$tymy_items = $tym->findAll()->fetchPairs( 'id', 'nazev');
		//$form->addMultiSelect('tym_id', 'Týmy: ', $tymy_items);
		$form->addCheckbox('zverejnit', 'Zveřejnit tuto soutěž?');
		$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět')->getControlPrototype()->class('cancel')->setValidationScope(NULL);
		$form->onSubmit[] = callback($this, 'soutezFormSubmitted');

		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	public function soutezFormSubmitted(NAppForm $form)
	{
		
		if ($form['save']->isSubmittedBy()) {
			$values = array('nazev'=>$form['nazev']->value,'liga_id'=>$form['liga_id']->value,'sezona_id'=>$form['sezona_id']->value,'zverejnit'=>$form['zverejnit']->value);
			$id = (int) $this->getParam('id');
			$soutez = new SoutezModel();
			if ($id > 0) {
				//$soutez->tym_soutez_delete($id);
				$soutez->update($id, $values);
				//$soutez->tym_soutez_insert2($form['tym_id']->value, $id);
				$this->flashMessage('Soutěž byla upravena.');
			} else {
				
				$soutez->insert($values);
				//$id = dibi::getInsertId();
				//$soutez->tym_soutez_insert2($form['tym_id']->value, $id);
				$this->flashMessage('Soutěž byla vytvořena.');
			}
		}

		$this->redirect('default');
	}
	
	
	/*ROZHODČÍ*/
	public function renderRozhodciDefault(){
		$rozhodci = new SoutezModel();
		$lide = new LideModel();
		$rozhodci_all = $rozhodci->rozhodci_soutez_findAll()->fetchAll();
		foreach($rozhodci_all as $item){
			$tmp_lide = $lide->findById($item['lide_id'])->fetch();
			$item['lide'] = $tmp_lide;
			
			$tmp_soutez = $rozhodci->findById($item['soutez_id'])->fetch();
			$item['soutez_nazev'] = $tmp_soutez['nazev'];
		}
		
		$this->template->rozhodci = $rozhodci_all;
	}
	
	public function renderRozhodciPridat()
	{
		$form = $this['rozhodciForm'];
	}
	
	public function renderRozhodciSmazat($id = 0)
	{
		$rozhodci = new SoutezModel();
		$this->template->rozhodci = $rozhodci->rozhodci_soutez_findById($id)->fetch();
		if (!$this->template->rozhodci) {
			throw new NBadRequestException('Rozhodčí nebyl nalezen');
		}
	}

	protected function createComponentRozhodciSmazatForm()
	{
		$form = new NAppForm;
		
		$form->addSubmit('delete', 'Smazat')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět');
		$form->onSubmit[] = callback($this, 'rozhodciSmazatFormSubmitted');
		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		return $form;
	}
	
	public function rozhodciSmazatFormSubmitted(NAppForm $form)
	{
		if ($form['delete']->isSubmittedBy()) {
			$rozhodci = new SoutezModel();
			$rozhodci->rozhodci_soutez_delete($this->getParam('id'));
			$this->flashMessage('Rozhodčí byl odebrán.');
		}

		$this->redirect('rozhodciDefault');
	}
	protected function createComponentRozhodciForm()
	{
		$soutez = new SoutezModel();
		$lide = new LideModel();
		$form = new NAppForm;
		$lide_items = $lide->findAll()->fetchPairs( 'id', 'prijmeni');
		$form->addSelect('lide_id', 'Lidé:', $lide_items)->skipFirst('Zvolte člověka');
		$soutez_items = $soutez->findAll()->fetchPairs( 'id', 'nazev' );
		$form->addSelect('soutez_id', 'Soutěž:', $soutez_items)->skipFirst('Zvolte soutěž');
		$form->addTextArea('poznamky', 'Poznámky:');
		$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět')->getControlPrototype()->class('cancel')->setValidationScope(NULL);
		$form->onSubmit[] = callback($this, 'rozhodciFormSubmitted');

		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	public function rozhodciFormSubmitted(NAppForm $form)
	{
		
		if ($form['save']->isSubmittedBy()) {
			$id = (int) $this->getParam('id');
			$rozhodci = new SoutezModel();
			if ($id > 0) {
				$rozhodci->rozhodci_soutez_update($id, $form->getValues());
				$this->flashMessage('Rozhodčí byl upraven.');
			} else {
				$rozhodci->rozhodci_soutez_insert($form->getValues());
				$this->flashMessage('Rozhodčí byl přidělen.');
			}
		}

		$this->redirect('rozhodciDefault');
	}

	/* POZICE */	
	public function renderPoziceDefault(){
		$pozice_soutez = new SoutezModel();
		$pozice = new PoziceModel();
		$pozice_soutez_all = $pozice_soutez->pozice_soutez_findAll()->fetchAll();
		foreach($pozice_soutez_all as $item){
			$tmp_soutez = $pozice_soutez->findById($item['soutez_id'])->fetch();
			$item['soutez_nazev'] = $tmp_soutez['nazev'];
			$tmp_pozice = $pozice->findById($item['pozice_id'])->fetch();
			$item['pozice_nazev'] = $tmp_pozice['nazev'];
		}
		$this->template->pozice = $pozice_soutez_all;
	}
	
	public function renderPozicePridat()
	{
		$form = $this['poziceForm'];
	}
	
	public function renderPoziceSmazat($id = 0)
	{
		$pozice = new SoutezModel();
		$this->template->pozice = $pozice->pozice_soutez_findById($id)->fetch();
		if (!$this->template->pozice) {
			throw new NBadRequestException('Pozice nebyla nalezena');
		}
	}

	protected function createComponentPoziceSmazatForm()
	{
		$form = new NAppForm;
		
		$form->addSubmit('delete', 'Smazat')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět');
		$form->onSubmit[] = callback($this, 'poziceSmazatFormSubmitted');
		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		return $form;
	}
	
	public function poziceSmazatFormSubmitted(NAppForm $form)
	{
		if ($form['delete']->isSubmittedBy()) {
			$pozice = new SoutezModel();
			$pozice->pozice_soutez_delete($this->getParam('id'));
			$this->flashMessage('Pozice byla odebrána.');
		}

		$this->redirect('poziceDefault');
	}
	protected function createComponentPoziceForm()
	{
		$soutez = new SoutezModel();
		$pozice = new PoziceModel();
		$form = new NAppForm;
		$pozice_items = $pozice->findAll()->fetchPairs( 'id', 'nazev');
		$form->addSelect('pozice_id', 'Pozice:', $pozice_items)->skipFirst('Zvolte pozici');
		$soutez_items = $soutez->findAll()->fetchPairs( 'id', 'nazev' );
		$form->addSelect('soutez_id', 'Soutěž:', $soutez_items)->skipFirst('Zvolte soutěž');
		$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět')->setValidationScope(NULL)->getControlPrototype()->class('cancel');
		$form->onSubmit[] = callback($this, 'poziceFormSubmitted');

		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	public function poziceFormSubmitted(NAppForm $form)
	{
		
		if ($form['save']->isSubmittedBy()) {
			$id = (int) $this->getParam('id');
			$pozice = new SoutezModel();
			if ($id > 0) {
				$pozice->pozice_soutez_update($id, $form->getValues());
				$this->flashMessage('Pozice byla upravena.');
			} else {
				$pozice->pozice_soutez_insert($form->getValues());
				$this->flashMessage('Pozice byla přidělena.');
			}
		}

		$this->redirect('poziceDefault');
	}
	
	//TYM
	public function renderTymyDefault()
	{
		$tym = new SoutezModel();
		$this->template->tymy = $tym->tym_soutez_findAll();
	}
	public function renderTymyPridat()
	{
		$form = $this['tymSoutezForm'];
	}
	
	public function renderTymyUpravit($id = 0)
	{
		$form = $this['tymSoutezForm'];
		if (!$form->isSubmitted()) {
			$tym_soutez = new SoutezModel();
			$row = $tym_soutez->findById($id)->fetch();
			if (!$row) {
				throw new NBadRequestException('Záznam nebyl nalezen.');
			}
			$form->setDefaults($row);
		}
	}
	
	public function renderTymySmazat($id = 0)
	{
		$form = $this['tymySmazatForm'];
		$tym_soutez = new SoutezModel();
		$this->template->tym_soutez = $tym_soutez->tym_soutez_findById($id)->fetch();	
		
		if (!$this->template->tym_soutez) {
			throw new NBadRequestException('Záznam nebyl nalezen');
		}
	}
	
	protected function createComponentTymySmazatForm()
	{
		$form = new NAppForm;
		
		$form->addSubmit('delete', 'Smazat')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět');
		$form->onSubmit[] = callback($this, 'tymySmazatFormSubmitted');
		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	
	public function tymySmazatFormSubmitted(NAppForm $form)
	{
		if ($form['delete']->isSubmittedBy()) {
			$tym_soutez = new SoutezModel();
			$tym_soutez->tym_soutez_delete($this->getParam('id'));
			$this->flashMessage('Tým byl ze soutěže odebrán.');
		}

		$this->redirect('tymyDefault');
	}
	
	protected function createComponentTymSoutezForm()
	{
		$form = new NAppForm;
		$soutez = new SoutezModel();
		$tym = new TymModel();
		$soutez_items = $soutez->findAll()->fetchPairs('id','nazev');
		$tym_items = $tym->findAll()->fetchPairs('id','nazev');
		$form->addSelect('soutez_id', 'Soutěž:', $soutez_items);
		$form->addSelect('tym_id', 'Tým:', $tym_items);
		$form->addText('plusove_body', 'Plusové body:');
		$form->addText('minusove_body', 'Mínusové body:');
		$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Zpět')->getControlPrototype()->class('cancel')->setValidationScope(NULL);
		$form->onSubmit[] = callback($this, 'tymSoutezFormSubmitted');

		$form->addProtection('Potvrďte prosím tento formulář znovu.');
		$this->template->form = $form;
		return $form;
	}
	public function tymSoutezFormSubmitted(NAppForm $form)
	{
		if ($form['save']->isSubmittedBy()) {
			$id = (int) $this->getParam('id');
			$tym_soutez = new SoutezModel();
				
			$tym_soutez->tym_soutez_insert($form->getValues());
			$this->flashMessage('Sezona byla vytvořena.');
			
		}

		$this->redirect('tymyDefault');
	}
}

